/**
 * 2010(c) Copyright Oceansoft Information System Co.,LTD. All rights reserved.
 * <p>
 * Compile: JDK 1.6+
 * <p>
 * 版权所有(C)：江苏欧索软件有限公司
 * <p>
 * 公司名称：江苏欧索软件有限公司
 * <p>
 * 公司地址：中国苏州科技城青山路1号
 * <p>
 * 网址: http://www.oceansoft.com.cn
 * <p>
 * 版本: 苏州公安统一用户管理平台1.0
 * <p>
 * 作者: 090922(陈伟)
 * <p>
 * 文件名:IUUMSRroleDao.java
 * <p>
 * 类产生时间: 2012-7-11 下午2:34:17
 * <p>
 * 负责人: 090922(陈伟)
 * <p>
 * Email:javacspring@gmail.com
 * <p>
 * 所在组 : 苏州公安统一用户管理平台
 * <p>
 * 所在部门: 电信/国土——技术二部
 * <p>
 * <p>
 */
package com.oceansoft.core.dao;

import java.util.List;
import java.util.Map;

import com.oceansoft.core.common.util.Pagination;
import com.oceansoft.core.domain.SysRole;
import com.oceansoft.core.domain.SysUser;

/**
 * 统一用户管理平台系统角色数据库操作接口
 * 
 * @author chenw
 * 
 */
public interface IUUMSRoleDao {

	/**
	 * 分页查询系统角色信息
	 * 
	 * @param pageIndex
	 * @return
	 */
	Pagination<SysRole> findRoleByPage(int pageIndex);

	/**
	 * 分页查询系统角色信息
	 * 
	 * @param pageIndex
	 * @return
	 */
	Pagination<SysRole> findRoleByPage(SysRole condition, int pageIndex);

	/**
	 * 加载用户权限
	 * 
	 * @param policeNum
	 * @return 权限Map集合 KEY=权限CODE,VALUE=权限名称
	 */
	Map<String, Object> findRoleByUser(String policeNum);

	/**
	 * 查询指定角色下所有人员
	 * 
	 * @param roleId
	 * @return
	 */
	List<SysUser> findUsersByRoleId(String roleId);

	/**
	 * 保存系统用户角色信息
	 * 
	 * @param userRoleData
	 * @return
	 */
	int[] saveRoleUserData(List<Object[]> userRoleData);

	/**
	 * 根据角色编号删除用户角色关联信息
	 * 
	 * @param roleId
	 */
	void deleteRoleById(String roleId);

	/**
	 * 查询指定编号角色信息
	 * 
	 * @param roleId
	 * @return
	 */
	SysRole findRoleById(String roleId);

	/**
	 * 保存角色信息
	 * 
	 * @param role
	 */
	void saveRole(SysRole role);

	/**
	 * 更新角色信息
	 * 
	 * @param role
	 */
	void update(SysRole role);

	/**
	 * 保存角色资源关联信息数据
	 * 
	 * @param list
	 */
	void saveRoleResource(List<Object[]> list);

	/**
	 * 删除指定角色关联的资源信息
	 * 
	 * @param roleId
	 */
	void deleteRoleResource(String roleId);

	/**
	 * 根据角色编号查询角色资源关联信息记录数
	 * 
	 * @param roleId
	 *            角色编号
	 * @return
	 */
	int findRoleResourceRowsByRoleId(String roleId);

	/**
	 * 删除系统资源
	 * 
	 * @param resourceId
	 */
	void deleteResourceById(String roleId);

	/**
	 * 根据角色编号查询角色人员关联信息记录数
	 * 
	 * @param roleId
	 *            角色编号
	 * @return
	 */
	int findRoleUserRowsByRoleId(String roleId);

	/**
	 * 删除管理员的时候同步删除t_uums_user_role中的记录
	 * @param userId
	 * @param roleId
	 */
	void deleteRoleUser(String userId, String roleId);

	/**
	 * 新增、修改时判断名称重复的
	 * @param role
	 * @return
	 */
	int findCountByName(SysRole role);
    /**
     * 查询所有角色
     * @return
     */
	List<SysRole> findAllRoles();
    /**
     * 根据警号查询出其所具有的角色
     * @param policeNum
     * @return
     */
	List<SysRole> findRoles(String policeNum);

	/**
     * 删除用户对应的所有角色
     * @param userid
     */
	void delRoleUser(String userid);
   /**
    * 针对用户添加角色
    * @param userid
    * @param rolid
    */
	void plusAddRoleToUser(String userid, String rolid);


}
